<?php
// *****************************************************************************
// $Id: init.php,v 1.1 2006/07/03 07:53:05 alex Exp $
// $Date: 2006/07/03 07:53:05 $
// Модуль qsform
// Префикс qsform_
// Автор: Алексей Дьяченко
// Библиотека распространяется по лицензии GPL
// Принять участие в разработке или скачать новую версию вы можете на сайте
// http://www.my-site.ru/
/*
	Copyright 2006 Alex Djachenko http://www.my-site.ru
	Authors: Alex Djachenko
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
// *****************************************************************************


// ************************************************
// Задаем настройки по умолчанию
$MT_mod_cfg = array();
// $MT_mod_cfg['varname'] = '';
// Подключаем файл с настройками
// include mst_modpath($MT_mod_name,'cfg/config.php');
// ************************************************

// Загружаем сигму
mst_modload('pear','HTML/QuickForm');
// Загружаем sharpobj
mst_initmod('sharpobj');

// Генерируем форму по объекту sharpData
class qsform_sharpDataForm
{
	// !!! Заметки: задание имен и опций полей, 
	// получение данных, работа с сессиями, сообщения об ошибках валидации
	// обработка типов полей 
	// Хранилище данных
	private $dataobj;
	// Форма
	private $form;
	//
	function __construct()
	{
		//
		$this->dataobj = null;
	}
	function setDataObj($dataobj)
	{
		// Устанавливаем объект с данными
		$this->dataobj = $dataobj;
	}
	function create($action_url,$metod='post',$formname=null)
	{
		//
		$this->form=new HTML_QuickForm($this->formname,
							$this->metod, 
							$action_url);
	}
	function &addElement($element)
	{
		//
		$args = func_get_args();
		return call_user_func_array(array(&$this->form,'addElement'),
							$args);
	}
	function generate($formvar=null)
	{
		// Генерируем форму по объекту
		foreach($this->dataobj as $name=>$obj)
		{
			// echo "<br /><pre>";
			// echo $name."\n";
			// print_r($obj);
			// echo "<pre>";
			// Задаем имя переменной формы
			if (is_null($formvar))
			{
				$varname = $name;
			}else
			{
				$varname = "{$formvar}[{$name}]";
			}
			// Добавляем поле в форму
			$this->addElement('text',$varname,$name,
							array('value'=>$obj->get('form')));
		}
	}
	function display()
	{
		//
		$this->form->display();
	}
	function autopilot($dataobj,$action_url,$varname,$header,$submit)
	{
		// Генерируем и показываем форму
		$this->setDataObj($dataobj);
		$this->create($action_url);
		$this->addElement('header', null, $header);
		$this->generate($varname);
		$this->addElement('submit', null, $submit);
		$this->display();
	}
}
?>
